{% extends 'layout/basic.html' %}
{% load static %}
{% block title %}首页index-dashboard{% endblock %}
{% block css %}
    <link rel="stylesheet" href="{% static 'css/account.css' %}">
{% endblock %}

{% block content %}

    <div class="container">
        <div class="panel panel-default">
            <div class="panel-heading">折线图 </div>
            <div class="panel-body">
                <div id="m1" style="width: 100%;height: 300px"></div>
            </div>
        </div>
        <div class="row">
            <div class="col-sm-8">
                <div class="panel panel-default">
                    <div class="panel-heading">柱状图</div>
                    <div class="panel-body">
                        <div id="m2" style="width: 100%;height:400px;"></div>
                    </div>
                </div>
            </div>
            <div class="col-sm-4">
                <div class="panel panel-default">
                    <div class="panel-heading">饼图</div>
                    <div class="panel-body">
                        <div id="m3" style="width: 100%;height:400px;"></div>
                    </div>
                </div>
            </div>
        </div>
    </div>

{% endblock %}

{% block js %}
    <script src="{% static 'js/echarts.min.js' %}"></script>

    <script type="text/javascript">
        $(function () {
            initBar();      // 柱状图
            initPie();      // 饼状图
            initLine();     // 折线图
        })
        /**
         * 初始化折线图
         */
        function initLine() {
            // 获取当前月份向前6个月的月份列表

            // new 对象
            let currentDate = new Date();
            // 获取当前月份，注意JavaScript中月份是从0开始计数的（即0代表1月，11代表12月）
            let currentMonth = currentDate.getMonth();
            let monthNames = ['January', 'February', 'March', 'April', 'May', 'June',
                'July', 'August', 'September', 'October', 'November', 'December'];
            // 定义前6月，空数组
            let previousSixMonth = [];
            for (let i = 0; i < 6; i++) {
                // 获取月份下标，由于月份数组是从0开始，需要从当前月份减去i，并且如果结果为负数，需要加上12来循环到上一年的月份
                // %12 取余数
                let monthIndex = (currentMonth - i + 12) % 12;
                console.log(monthIndex);
                // push方法，数组的末尾添加一个或多个元素，并返回新的数组长度。这个方法会直接修改原数组，而不是创建一个新的数组。
                previousSixMonth.push(monthNames[monthIndex]);
            }
            // 反转
            previousSixMonth.reverse();

            // 基于准备好的dom，初始化echarts实例
            var myChart = echarts.init(document.getElementById('m1'));

            //let monthNames = ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"];
            // 指定图表的配置项和数据  var 局部变量
            var option = {
                title: {
                    text: '',
                    left: 'center',
                },
                tooltip: {
                    trigger: 'axis'
                },
                legend: {
                    data: [],
                    bottom: 0,
                },
                toolbox: {
                    feature: {
                        saveAsImage: {}
                    }
                },
                xAxis: {
                    type: 'category',
                    boundaryGap: false,
                    {#// data: ['一月', '二月', '三月', '四月', '五月', '六月'],#}
                    {#//data: previousSixMonth,#}
                    data: [],
                },
                yAxis: {
                    type: 'value',
                },
                /*
                series: [
                    {
                        name: 'ERO',
                        type: 'line',
                        {#stack: 'Total',#}
                        data: [120, 132, 101, 134, 90, 230]
                    },
                    {
                        name: 'NRO',
                        type: 'line',
                        {#stack: 'Total',#}
                        data: [220, 182, 191, 234, 290, 330]
                    },
                    {
                        name: 'SRO',
                        type: 'line',
                        {#stack: 'Total',#}
                        data: [150, 232, 201, 154, 190, 330]
                    },
                ]
                */
                series: []
            };

            $.ajax({
                url: '/index/line/',
                type: 'get',
                dataType: 'JSON',
                success: function (res) {
                    if (res.status) {
                        console.log('折线图：', res.series);
                        option.title.text = res.title_text;
                        option.legend.data = res.legend;
                        option.series = res.series;
                        option.xAxis.data = res.xAxis;
                    }

                    // 使用刚指定的配置项和数据显示图表。
                    myChart.setOption(option);
                }

            })
        }


        /**
         * 初始化柱状图
         */
        function initBar() {
            // 基于准备好的dom，初始化echarts实例
            var myChart = echarts.init(document.getElementById('m2'));

            // 指定图表的配置项和数据  var 局部变量
            var option = {
                title: {
                    text: '',
                    subtext: undefined,     // 空值，等后台传
                    textAlign: "center",
                    left: 'center',
                },
                tooltip: {},
                legend: {
                    data: [],   // 后台获取
                    bottom: 0,
                },
                // x轴key
                xAxis: {
                    data: []    // 后台获取
                },
                yAxis: {},
                // x轴对应的值
                series: []      // 后台获取
            };

            $.ajax({
                url: '/index/bar/',
                type: 'get',
                dataType: 'JSON',
                success: function (res) {
                    // 将后台返回的数据更新到option中
                    if (res.status) {   // 成功
                        option.title.text = res.result.title_text;
                        option.title.subtext = res.result.subtext;
                        option.legend.data = res.result.legend;
                        option.xAxis.data = res.result.xAxis;
                        option.series = res.result.series;

                        // 使用刚指定的配置项和数据显示图表。
                        myChart.setOption(option);
                    }

                }
            })
        }

        /**
         * 初始化饼状图
         */
        function initPie() {
            // 基于准备好的dom，初始化echarts实例
            var myChart = echarts.init(document.getElementById('m3'));

            var option = {    // var 局部变量
                title: {
                    text: ' Task 数据',
                    subtext: undefined,     // 空值，等后台传
                    left: 'center'
                },
                tooltip: {
                    trigger: 'item'
                },
                legend: {
                    orient: 'horizontal',
                    left: 'left',
                    bottom: 0,
                },
                series: [       // 注意这里是 列表包字典，series = [dict0,dict1,....],选择时要带下标
                    {
                        name: 'Case 统计',
                        type: 'pie',
                        radius: '50%',      // 半径
                        data: [],       // 等后台传
                        emphasis: {
                            itemStyle: {
                                shadowBlur: 10,
                                shadowOffsetX: 0,
                                shadowColor: 'rgba(0, 0, 0, 0.5)'
                            }
                        }
                    }
                ]
            };

            $.ajax({
                url: '/index/pie/',
                type: 'get',
                dataType: "JSON",
                success: function (res) {
                    if (res.status) {
                        console.log(res.result);
                        option.title.subtext = res.result.subtext;
                        // series = [dict0,dict1,....],选择时要带下标
                        option.series[0].data = res.result.series_data;
                    }
                    // 使用刚指定的配置项和数据显示图表。
                    myChart.setOption(option);
                }
            })

        }

    </script>

{% endblock %}